Skip to content

UX improvements: replay sets, mobile notifications, exercise tag links, common toast, CD commit filter#39

Closed
Copilot wants to merge 3 commits intomainfrom
copilot/simplify-notification-handling
Closed

UX improvements: replay sets, mobile notifications, exercise tag links, common toast, CD commit filter#39
Copilot wants to merge 3 commits intomainfrom
copilot/simplify-notification-handling

Conversation

Copy link
Contributor

Copilot AI commented Feb 26, 2026

Several UX gaps and reliability issues across active sessions, past session navigation, notification delivery on Android, and CI overhead.

Active Session

  • Replay button () on each completed exercise — restarts that exercise immediately with inputs pre-filled from the previous set, no re-search needed
  • Android PWA notification fixsend_notification now routes through navigator.serviceWorker.ready.showNotification() (via js_sys::eval). new Notification() is unsupported in Android PWAs; falls back to it only if the service worker is unavailable. Strings are JSON-encoded via serde_json to prevent injection
  • Permission denied warning — on mount, use_effect checks Notification::permission() == Denied and shows a 3 s auto-dismissing amber snackbar

Past Sessions

  • Exercise name tags are now <button> elements; clicking sets a global ExerciseFocusSignal context and navigates to the Exercise List, where use_effect reads and clears the signal to pre-fill the search query

Toasts

  • Common Snackbar component extracted; SNACKBAR_DISMISS_MS centralised in main.rs; .snackbar--warning variant added (amber gradient); .snackbar gains cursor: pointer

CD Workflow

Both deploy-web and build-android jobs skip push events unless the commit starts with feat:, fix:, or perf:. Releases and workflow_dispatch are unaffected:

if: |
  github.event_name != 'push' ||
  startsWith(github.event.head_commit.message, 'feat:') ||
  startsWith(github.event.head_commit.message, 'fix:') ||
  startsWith(github.event.head_commit.message, 'perf:')

🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

…ons, exercise links, toast, CD filter

Co-authored-by: gfauredev <19304085+gfauredev@users.noreply.github.com>
Copilot AI changed the title [WIP] Refactor structure for simpler handling of notifications and sessions UX improvements: replay sets, mobile notifications, exercise tag links, toast refactor, CD filtering Feb 26, 2026
@github-actions
Copy link

🧪 Unit Tests & Coverage

Test Results

info: cargo-llvm-cov currently setting cfg(coverage); you can opt-out it by passing --no-cfg-coverage
�[1m�[92m Downloading�[0m crates ...
�[1m�[92m  Downloaded�[0m atomic-waker v1.1.2
�[1m�[92m  Downloaded�[0m gloo-net v0.6.0
�[1m�[92m  Downloaded�[0m gloo-timers v0.3.0
�[1m�[92m  Downloaded�[0m getrandom v0.3.4
�[1m�[92m  Downloaded�[0m half v2.7.1
�[1m�[92m  Downloaded�[0m keyboard-types v0.7.0
�[1m�[92m  Downloaded�[0m manganis-macro v0.7.3
�[1m�[92m  Downloaded�[0m manganis-core v0.7.3
�[1m�[92m  Downloaded�[0m matchit v0.8.4
�[1m�[92m  Downloaded�[0m option-ext v0.2.0
�[1m�[92m  Downloaded�[0m psl-types v2.0.11
�[1m�[92m  Downloaded�[0m pin-project-internal v1.1.10
�[1m�[92m  Downloaded�[0m thiserror-impl v1.0.69
�[1m�[92m  Downloaded�[0m zerocopy v0.8.39
�[1m�[92m  Downloaded�[0m utf8_iter v1.0.4
�[1m�[92m  Downloaded�[0m zerovec-derive v0.11.2
�[1m�[92m  Downloaded�[0m wasm-streams v0.4.2
�[1m�[92m  Downloaded�[0m zeroize v1.8.2
�[1m�[92m  Downloaded�[0m zerofrom-derive v0.1.6
�[1m�[92m  Downloaded�[0m writeable v0.6.2
�[1m�[92m  Downloaded�[0m zmij v1.0.21
�[1m�[92m  Downloaded�[0m quinn-proto v0.11.13
�[1m�[92m  Downloaded�[0m unicode-segmentation v1.12.0
�[1m�[92m  Downloaded�[0m regex-syntax v0.8.9
�[1m�[92m  Downloaded�[0m tracing-subscriber v0.3.22
�[1m�[92m  Downloaded�[0m tokio v1.49.0
�[1m�[92m  Downloaded�[0m typenum v1.19.0
�[1m�[92m  Downloaded�[0m tungstenite v0.27.0
�[1m�[92m  Downloaded�[0m tower-http v0.6.8
�[1m�[92m  Downloaded�[0m vcpkg v0.2.15
�[1m�[92m  Downloaded�[0m tower v0.5.3
�[1m�[92m  Downloaded�[0m tokio-util v0.7.18
�[1m�[92m  Downloaded�[0m regex-automata v0.4.14
�[1m�[92m  Downloaded�[0m syn v2.0.116
�[1m�[92m  Downloaded�[0m rustls v0.23.36
�[1m�[92m  Downloaded�[0m encoding_rs v0.8.35
�[1m�[92m  Downloaded�[0m openssl v0.10.75
�[1m�[92m  Downloaded�[0m warnings-macro v0.2.0
�[1m�[92m  Downloaded�[0m libc v0.2.182
�[1m�[92m  Downloaded�[0m web-sys v0.3.85
�[1m�[92m  Downloaded�[0m url v2.5.8
�[1m�[92m  Downloaded�[0m time v0.3.47
�[1m�[92m  Downloaded�[0m tinyvec v1.10.0
�[1m�[92m  Downloaded�[0m smallvec v1.15.1
�[1m�[92m  Downloaded�[0m zerotrie v0.2.3
�[1m�[92m  Downloaded�[0m ring v0.17.14
�[1m�[92m  Downloaded�[0m zerocopy-derive v0.8.39
�[1m�[92m  Downloaded�[0m webpki-roots v1.0.6
�[1m�[92m  Downloaded�[0m winnow v0.7.14
�[1m�[92m  Downloaded�[0m zerofrom v0.1.6
�[1m�[92m  Downloaded�[0m unicode-ident v1.0.24
�[1m�[92m  Downloaded�[0m zerovec v0.11.5
�[1m�[92m  Downloaded�[0m time-macros v0.2.27
�[1m�[92m  Downloaded�[0m subsecond v0.7.3
�[1m�[92m  Downloaded�[0m spin v0.9.8
�[1m�[92m  Downloaded�[0m reqwest v0.12.28
�[1m�[92m  Downloaded�[0m wasm-bindgen-shared v0.2.108
�[1m�[92m  Downloaded�[0m want v0.3.1
�[1m�[92m  Downloaded�[0m version_check v0.9.5
�[1m�[92m  Downloaded�[0m tokio-native-tls v0.3.1
�[1m�[92m  Downloaded�[0m thread_local v1.1.9
�[1m�[92m  Downloaded�[0m thiserror-impl v2.0.18
�[1m�[92m  Downloaded�[0m thiserror v2.0.18
�[1m�[92m  Downloaded�[0m subtle v2.6.1
�[1m�[92m  Downloaded�[0m subsecond-types v0.7.3
�[1m�[92m  Downloaded�[0m mio v1.1.1
�[1m�[92m  Downloaded�[0m indexmap v2.13.0
�[1m�[92m  Downloaded�[0m hyper v1.8.1
�[1m�[92m  Downloaded�[0m wasm-bindgen-macro-support v0.2.108
�[1m�[92m  Downloaded�[0m wasm-bindgen-futures v0.4.58
�[1m�[92m  Downloaded�[0m warnings v0.2.1
�[1m�[92m  Downloaded�[0m unicase v2.9.0
�[1m�[92m  Downloaded�[0m tracing v0.1.44
�[1m�[92m  Downloaded�[0m tower-service v0.3.3
�[1m�[92m  Downloaded�[0m tower-layer v0.3.3
�[1m�[92m  Downloaded�[0m tinyvec_macros v0.1.1
�[1m�[92m  Downloaded�[0m tinystr v0.8.2
�[1m�[92m  Downloaded�[0m slotmap v1.1.1
�[1m�[92m  Downloaded�[0m publicsuffix v2.3.0
�[1m�[92m  Downloaded�[0m openssl-sys v0.9.111
�[1m�[92m  Downloaded�[0m icu_properties_data v2.1.2
�[1m�[92m  Downloaded�[0m yoke-derive v0.8.1
�[1m�[92m  Downloaded�[0m yoke v0.8.1
�[1m�[92m  Downloaded�[0m xxhash-rust v0.8.15
�[1m�[92m  Downloaded�[0m wasm-bindgen-macro v0.2.108
�[1m�[92m  Downloaded�[0m wasm-bindgen v0.2.108
�[1m�[92m  Downloaded�[0m uuid v1.21.0
�[1m�[92m  Downloaded�[0m tracing-core v0.1.36
�[1m�[92m  Downloaded�[0m tokio-rustls v0.26.4
�[1m�[92m  Downloaded�[0m thiserror v1.0.69
�[1m�[92m  Downloaded�[0m synstructure v0.13.2
�[1m�[92m  Downloaded�[0m socket2 v0.6.2
�[1m�[92m  Downloaded�[0m sledgehammer_utils v0.3.1
�[1m�[92m  Downloaded�[0m quinn v0.11.9
�[1m�[92m  Downloaded�[0m memchr v2.8.0
�[1m�[92m  Downloaded�[0m iri-string v0.7.10
�[1m�[92m  Downloaded�[0m idna v1.1.0
�[1m�[92m  Downloaded�[0m icu_properties v2.1.2
�[1m�[92m  Downloaded�[0m hyper-util v0.1.20
�[1m�[92m  Downloaded�[0m tracing-attributes v0.1.31
�[1m�[92m  Downloaded�[0m time-core v0.1.8
�[1m�[92m  Downloaded�[0m sledgehammer_bindgen v0.6.0
�[1m�[92m  Downloaded�[0m serde_json v1.0.149
�[1m�[92m  Downloaded�[0m quinn-udp v0.5.14
�[1m�[92m  Downloaded�[0m pin-project v1.1.10
�[1m�[92m  Downloaded�[0m once_cell v1.21.3
�[1m�[92m  Downloaded�[0m num-traits v0.2.19
�[1m�[92m  Downloaded�[0m litrs v1.0.0
�[1m�[92m  Downloaded�[0m icu_provider v2.1.1
�[1m�[92m  Downloaded�[0m httparse v1.10.1
�[1m�[92m  Downloaded�[0m http v1.4.0
�[1m�[92m  Downloaded�[0m h2 v0.4.13
�[1m�[92m  Downloaded�[0m futures-util v0.3.32
�[1m�[92m  Downloaded�[0m futures v0.3.32
�[1m�[92m  Downloaded�[0m euclid v0.22.13
�[1m�[92m  Downloaded�[0m derive_more-impl v2.1.1
�[1m�[92m  Downloaded�[0m derive_more v2.1.1
�[1m�[92m  Downloaded�[0m cc v1.2.56
�[1m�[92m  Downloaded�[0m utf-8 v0.7.6
�[1m�[92m  Downloaded�[0m untrusted v0.9.0
�[1m�[92m  Downloaded�[0m unicode-xid v0.2.6
�[1m�[92m  Downloaded�[0m try-lock v0.2.5
�[1m�[92m  Downloaded�[0m sync_wrapper v1.0.2
�[1m�[92m  Downloaded�[0m stable_deref_trait v1.2.1
�[1m�[92m  Downloaded�[0m sledgehammer_bindgen_macro v0.6.5
�[1m�[92m  Downloaded�[0m slab v0.4.12
�[1m�[92m  Downloaded�[0m shlex v1.3.0
�[1m�[92m  Downloaded�[0m sharded-slab v0.1.7
�[1m�[92m  Downloaded�[0m sha2 v0.10.9
�[1m�[92m  Downloaded�[0m serde_urlencoded v0.7.1
�[1m�[92m  Downloaded�[0m serde_qs v0.15.0
�[1m�[92m  Downloaded�[0m serde_path_to_error v0.1.20
�[1m�[92m  Downloaded�[0m serde_derive v1.0.228
�[1m�[92m  Downloaded�[0m serde_core v1.0.228
�[1m�[92m  Downloaded�[0m serde-wasm-bindgen v0.6.5
�[1m�[92m  Downloaded�[0m serde v1.0.228
�[1m�[92m  Downloaded�[0m semver v1.0.27
�[1m�[92m  Downloaded�[0m ryu v1.0.23
�[1m�[92m  Downloaded�[0m rustversion v1.0.22
�[1m�[92m  Downloaded�[0m rustls-webpki v0.103.9
�[1m�[92m  Downloaded�[0m rand_core v0.9.5
�[1m�[92m  Downloaded�[0m rand_chacha v0.9.0
�[1m�[92m  Downloaded�[0m rand v0.9.2
�[1m�[92m  Downloaded�[0m quote v1.0.44
�[1m�[92m  Downloaded�[0m proc-macro2 v1.0.106
�[1m�[92m  Downloaded�[0m potential_utf v0.1.4
�[1m�[92m  Downloaded�[0m pkg-config v0.3.32
�[1m�[92m  Downloaded�[0m pin-project-lite v0.2.16
�[1m�[92m  Downloaded�[0m parking_lot_core v0.9.12
�[1m�[92m  Downloaded�[0m parking_lot v0.12.5
�[1m�[92m  Downloaded�[0m openssl-macros v0.1.1
�[1m�[92m  Downloaded�[0m native-tls v0.2.18
�[1m�[92m  Downloaded�[0m mime_guess v2.0.5
�[1m�[92m  Downloaded�[0m memmap2 v0.9.10
�[1m�[92m  Downloaded�[0m log v0.4.29
�[1m�[92m  Downloaded�[0m lock_api v0.4.14
�[1m�[92m  Downloaded�[0m litemap v0.8.1
�[1m�[92m  Downloaded�[0m lazy-js-bundle v0.7.3
�[1m�[92m  Downloaded�[0m itoa v1.0.17
�[1m�[92m  Downloaded�[0m ipnet v2.11.0
�[1m�[92m  Downloaded�[0m infer v0.19.0
�[1m�[92m  Downloaded�[0m icu_normalizer v2.1.1
�[1m�[92m  Downloaded�[0m icu_locale_core v2.1.1
�[1m�[92m  Downloaded�[0m futures-channel v0.3.32
�[1m�[92m  Downloaded�[0m find-msvc-tools v0.1.9
�[1m�[92m  Downloaded�[0m enumset v1.1.10
�[1m�[92m  Downloaded�[0m dirs v6.0.0
�[1m�[92m  Downloaded�[0m dioxus-web v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-rsx v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-router-macro v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-router v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-interpreter-js v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-fullstack-core v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-fullstack v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-document v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-core-macro v0.7.3
�[1m�[92m  Downloaded�[0m dioxus v0.7.3
�[1m�[92m  Downloaded�[0m data-encoding v2.10.0
�[1m�[92m  Downloaded�[0m darling_macro v0.21.3
�[1m�[92m  Downloaded�[0m darling_core v0.21.3
�[1m�[92m  Downloaded�[0m const-serialize v0.8.0-alpha.0
�[1m�[92m  Downloaded�[0m ciborium v0.2.2
�[1m�[92m  Downloaded�[0m bumpalo v3.19.1
�[1m�[92m  Downloaded�[0m sha1 v0.10.6
�[1m�[92m  Downloaded�[0m send_wrapper v0.6.0
�[1m�[92m  Downloaded�[0m scopeguard v1.2.0
�[1m�[92m  Downloaded�[0m rustls-pki-types v1.14.0
�[1m�[92m  Downloaded�[0m rustc_version v0.4.1
�[1m�[92m  Downloaded�[0m rustc-hash v2.1.1
�[1m�[92m  Downloaded�[0m rustc-hash v1.1.0
�[1m�[92m  Downloaded�[0m proc-macro2-diagnostics v0.10.1
�[1m�[92m  Downloaded�[0m ppv-lite86 v0.2.21
�[1m�[92m  Downloaded�[0m pin-utils v0.1.0
�[1m�[92m  Downloaded�[0m num_threads v0.1.7
�[1m�[92m  Downloaded�[0m num-conv v0.2.0
�[1m�[92m  Downloaded�[0m multer v3.1.0
�[1m�[92m  Downloaded�[0m manganis v0.7.3
�[1m�[92m  Downloaded�[0m generic-array v0.14.7
�[1m�[92m  Downloaded�[0m generational-box v0.7.3
�[1m�[92m  Downloaded�[0m futures-sink v0.3.32
�[1m�[92m  Downloaded�[0m futures-macro v0.3.32
�[1m�[92m  Downloaded�[0m futures-io v0.3.32
�[1m�[92m  Downloaded�[0m futures-executor v0.3.32
�[1m�[92m  Downloaded�[0m form_urlencoded v1.2.2
�[1m�[92m  Downloaded�[0m foreign-types v0.3.2
�[1m�[92m  Downloaded�[0m dioxus-stores v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-hooks v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-config-macros v0.7.3
�[1m�[92m  Downloaded�[0m percent-encoding v2.3.2
�[1m�[92m  Downloaded�[0m mime v0.3.17
�[1m�[92m  Downloaded�[0m inventory v0.3.21
�[1m�[92m  Downloaded�[0m icu_collections v2.1.1
�[1m�[92m  Downloaded�[0m powerfmt v0.2.0
�[1m�[92m  Downloaded�[0m openssl-probe v0.2.1
�[1m�[92m  Downloaded�[0m icu_normalizer_data v2.1.1
�[1m�[92m  Downloaded�[0m httpdate v1.0.3
�[1m�[92m  Downloaded�[0m futures-core v0.3.32
�[1m�[92m  Downloaded�[0m equivalent v1.0.2
�[1m�[92m  Downloaded�[0m displaydoc v0.2.5
�[1m�[92m  Downloaded�[0m matchers v0.2.0
�[1m�[92m  Downloaded�[0m lru-slab v0.1.2
�[1m�[92m  Downloaded�[0m js-sys v0.3.85
�[1m�[92m  Downloaded�[0m ident_case v1.0.1
�[1m�[92m  Downloaded�[0m dunce v1.0.5
�[1m�[92m  Downloaded�[0m dioxus-history v0.7.3
�[1m�[92m  Downloaded�[0m longest-increasing-subsequence v0.1.0
�[1m�[92m  Downloaded�[0m idna_adapter v1.2.1
�[1m�[92m  Downloaded�[0m hyper-rustls v0.27.7
�[1m�[92m  Downloaded�[0m http-body-util v0.1.3
�[1m�[92m  Downloaded�[0m headers v0.4.1
�[1m�[92m  Downloaded�[0m futures-task v0.3.32
�[1m�[92m  Downloaded�[0m foreign-types-shared v0.1.1
�[1m�[92m  Downloaded�[0m document-features v0.2.12
�[1m�[92m  Downloaded�[0m dirs-sys v0.5.0
�[1m�[92m  Downloaded�[0m dioxus-fullstack-macro v0.7.3
�[1m�[92m  Downloaded�[0m libloading v0.8.9
�[1m�[92m  Downloaded�[0m headers-core v0.3.0
�[1m�[92m  Downloaded�[0m macro-string v0.1.4
�[1m�[92m  Downloaded�[0m lazy_static v1.5.0
�[1m�[92m  Downloaded�[0m http-body v1.0.1
�[1m�[92m  Downloaded�[0m content_disposition v0.4.0
�[1m�[92m  Downloaded�[0m const_format_proc_macros v0.2.34
�[1m�[92m  Downloaded�[0m ciborium-ll v0.2.2
�[1m�[92m  Downloaded�[0m ciborium-io v0.2.2
�[1m�[92m  Downloaded�[0m base64 v0.22.1
�[1m�[92m  Downloaded�[0m hyper-tls v0.6.0
�[1m�[92m  Downloaded�[0m hashbrown v0.16.1
�[1m�[92m  Downloaded�[0m dioxus-stores-macro v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-logger v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-devtools-types v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-core-types v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-core v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-asset-resolver v0.7.3
�[1m�[92m  Downloaded�[0m crypto-common v0.1.7
�[1m�[92m  Downloaded�[0m cpufeatures v0.2.17
�[1m�[92m  Downloaded�[0m cookie_store v0.22.1
�[1m�[92m  Downloaded�[0m convert_case v0.10.0
�[1m�[92m  Downloaded�[0m convert_case v0.8.0
�[1m�[92m  Downloaded�[0m const_format v0.2.35
�[1m�[92m  Downloaded�[0m const-str v0.7.1
�[1m�[92m  Downloaded�[0m const-serialize-macro v0.8.0-alpha.0
�[1m�[92m  Downloaded�[0m cfb v0.7.3
�[1m�[92m  Downloaded�[0m bytes v1.11.1
�[1m�[92m  Downloaded�[0m byteorder v1.5.0
�[1m�[92m  Downloaded�[0m block-buffer v0.10.4
�[1m�[92m  Downloaded�[0m bitflags v2.11.0
�[1m�[92m  Downloaded�[0m base16 v0.2.1
�[1m�[92m  Downloaded�[0m axum-core v0.5.6
�[1m�[92m  Downloaded�[0m gloo-utils v0.2.0
�[1m�[92m  Downloaded�[0m dioxus-signals v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-html-internal-macro v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-html v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-devtools v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-config-macro v0.7.3
�[1m�[92m  Downloaded�[0m dioxus-cli-config v0.7.3
�[1m�[92m  Downloaded�[0m digest v0.10.7
�[1m�[92m  Downloaded�[0m darling v0.21.3
�[1m�[92m  Downloaded�[0m cookie v0.18.1
�[1m�[92m  Downloaded�[0m const-serialize v0.7.2
�[1m�[92m  Downloaded�[0m cfg_aliases v0.2.1
�[1m�[92m  Downloaded�[0m getrandom v0.2.17
�[1m�[92m  Downloaded�[0m const-serialize-macro v0.7.2
�[1m�[92m  Downloaded�[0m charset v0.1.5
�[1m�[92m  Downloaded�[0m cfg-if v1.0.4
�[1m�[92m  Downloaded�[0m axum v0.8.8
�[1m�[92m  Downloaded�[0m aho-corasick v1.1.4
�[1m�[92m  Downloaded�[0m fnv v1.0.7
�[1m�[92m  Downloaded�[0m enumset_derive v0.14.0
�[1m�[92m  Downloaded�[0m deranged v0.5.6
�[1m�[92m  Downloaded�[0m autocfg v1.5.0
�[1m�[92m  Downloaded�[0m async-tungstenite v0.31.0
�[1m�[92m  Downloaded�[0m async-trait v0.1.89
�[1m�[92m  Downloaded�[0m anyhow v1.0.101
�[1m�[92m  Downloaded�[0m async-stream-impl v0.3.6
�[1m�[92m  Downloaded�[0m async-stream v0.3.6
�[1m�[92m   Compiling�[0m unicode-ident v1.0.24
�[1m�[92m   Compiling�[0m proc-macro2 v1.0.106
�[1m�[92m   Compiling�[0m quote v1.0.44
�[1m�[92m   Compiling�[0m cfg-if v1.0.4
�[1m�[92m   Compiling�[0m libc v0.2.182
�[1m�[92m   Compiling�[0m once_cell v1.21.3
�[1m�[92m   Compiling�[0m pin-project-lite v0.2.16
�[1m�[92m   Compiling�[0m rustversion v1.0.22
�[1m�[92m   Compiling�[0m futures-core v0.3.32
�[1m�[92m   Compiling�[0m version_check v0.9.5
�[1m�[92m   Compiling�[0m futures-sink v0.3.32
�[1m�[92m   Compiling�[0m slab v0.4.12
�[1m�[92m   Compiling�[0m serde_core v1.0.228
�[1m�[92m   Compiling�[0m memchr v2.8.0
�[1m�[92m   Compiling�[0m smallvec v1.15.1
�[1m�[92m   Compiling�[0m syn v2.0.116
�[1m�[92m   Compiling�[0m tracing-core v0.1.36
�[1m�[92m   Compiling�[0m serde v1.0.228
�[1m�[92m   Compiling�[0m wasm-bindgen-shared v0.2.108
�[1m�[92m   Compiling�[0m futures-task v0.3.32
�[1m�[92m   Compiling�[0m futures-io v0.3.32
�[1m�[92m   Compiling�[0m bytes v1.11.1
�[1m�[92m   Compiling�[0m bumpalo v3.19.1
�[1m�[92m   Compiling�[0m wasm-bindgen v0.2.108
�[1m�[92m   Compiling�[0m find-msvc-tools v0.1.9
�[1m�[92m   Compiling�[0m shlex v1.3.0
�[1m�[92m   Compiling�[0m cc v1.2.56
�[1m�[92m   Compiling�[0m futures-channel v0.3.32
�[1m�[92m   Compiling�[0m itoa v1.0.17
�[1m�[92m   Compiling�[0m thiserror v2.0.18
�[1m�[92m   Compiling�[0m stable_deref_trait v1.2.1
�[1m�[92m   Compiling�[0m parking_lot_core v0.9.12
�[1m�[92m   Compiling�[0m fnv v1.0.7
�[1m�[92m   Compiling�[0m scopeguard v1.2.0
�[1m�[92m   Compiling�[0m lock_api v0.4.14
�[1m�[92m   Compiling�[0m slotmap v1.1.1
�[1m�[92m   Compiling�[0m unicode-xid v0.2.6
�[1m�[92m   Compiling�[0m typenum v1.19.0
�[1m�[92m   Compiling�[0m anyhow v1.0.101
�[1m�[92m   Compiling�[0m dioxus-core-types v0.7.3
�[1m�[92m   Compiling�[0m const_format_proc_macros v0.2.34
�[1m�[92m   Compiling�[0m parking_lot v0.12.5
�[1m�[92m   Compiling�[0m http v1.4.0
�[1m�[92m   Compiling�[0m memmap2 v0.9.10
�[1m�[92m   Compiling�[0m synstructure v0.13.2
�[1m�[92m   Compiling�[0m wasm-bindgen-macro-support v0.2.108
�[1m�[92m   Compiling�[0m generic-array v0.14.7
�[1m�[92m   Compiling�[0m libloading v0.8.9
�[1m�[92m   Compiling�[0m rustc-hash v2.1.1
�[1m�[92m   Compiling�[0m const_format v0.2.35
�[1m�[92m   Compiling�[0m mio v1.1.1
�[1m�[92m   Compiling�[0m socket2 v0.6.2
�[1m�[92m   Compiling�[0m bitflags v2.11.0
�[1m�[92m   Compiling�[0m serde_derive v1.0.228
�[1m�[92m   Compiling�[0m tracing-attributes v0.1.31
�[1m�[92m   Compiling�[0m futures-macro v0.3.32
�[1m�[92m   Compiling�[0m futures-util v0.3.32
�[1m�[92m   Compiling�[0m wasm-bindgen-macro v0.2.108
�[1m�[92m   Compiling�[0m tracing v0.1.44
�[1m�[92m   Compiling�[0m zerofrom-derive v0.1.6
�[1m�[92m   Compiling�[0m thiserror-impl v2.0.18
�[1m�[92m   Compiling�[0m zerofrom v0.1.6
�[1m�[92m   Compiling�[0m yoke-derive v0.8.1
�[1m�[92m   Compiling�[0m yoke v0.8.1
�[1m�[92m   Compiling�[0m zerovec-derive v0.11.2
�[1m�[92m   Compiling�[0m subsecond-types v0.7.3
�[1m�[92m   Compiling�[0m displaydoc v0.2.5
�[1m�[92m   Compiling�[0m subsecond v0.7.3
�[1m�[92m   Compiling�[0m generational-box v0.7.3
�[1m�[92m   Compiling�[0m longest-increasing-subsequence v0.1.0
�[1m�[92m   Compiling�[0m tokio v1.49.0
�[1m�[92m   Compiling�[0m pin-project-internal v1.1.10
�[1m�[92m   Compiling�[0m zerovec v0.11.5
�[1m�[92m   Compiling�[0m dioxus-core v0.7.3
�[1m�[92m   Compiling�[0m httparse v1.10.1
�[1m�[92m   Compiling�[0m pin-project v1.1.10
�[1m�[92m   Compiling�[0m tinystr v0.8.2
�[1m�[92m   Compiling�[0m warnings-macro v0.2.0
�[1m�[92m   Compiling�[0m vcpkg v0.2.15
�[1m�[92m   Compiling�[0m lazy-js-bundle v0.7.3
�[1m�[92m   Compiling�[0m unicode-segmentation v1.12.0
�[1m�[92m   Compiling�[0m litemap v0.8.1
�[1m�[92m   Compiling�[0m writeable v0.6.2
�[1m�[92m   Compiling�[0m ident_case v1.0.1
�[1m�[92m   Compiling�[0m pkg-config v0.3.32
�[1m�[92m   Compiling�[0m darling_core v0.21.3
�[1m�[92m   Compiling�[0m openssl-sys v0.9.111
�[1m�[92m   Compiling�[0m icu_locale_core v2.1.1
�[1m�[92m   Compiling�[0m convert_case v0.8.0
�[1m�[92m   Compiling�[0m warnings v0.2.1
�[1m�[92m   Compiling�[0m block-buffer v0.10.4
�[1m�[92m   Compiling�[0m crypto-common v0.1.7
�[1m�[92m   Compiling�[0m potential_utf v0.1.4
�[1m�[92m   Compiling�[0m zerotrie v0.2.3
�[1m�[92m   Compiling�[0m js-sys v0.3.85
�[1m�[92m   Compiling�[0m proc-macro2-diagnostics v0.10.1
�[1m�[92m   Compiling�[0m zerocopy v0.8.39
�[1m�[92m   Compiling�[0m icu_properties_data v2.1.2
�[1m�[92m   Compiling�[0m percent-encoding v2.3.2
�[1m�[92m   Compiling�[0m getrandom v0.3.4
�[1m�[92m   Compiling�[0m icu_normalizer_data v2.1.1
�[1m�[92m   Compiling�[0m autocfg v1.5.0
�[1m�[92m   Compiling�[0m darling_macro v0.21.3
�[1m�[92m   Compiling�[0m icu_provider v2.1.1
�[1m�[92m   Compiling�[0m num-traits v0.2.19
�[1m�[92m   Compiling�[0m icu_collections v2.1.1
�[1m�[92m   Compiling�[0m digest v0.10.7
�[1m�[92m   Compiling�[0m dioxus-signals v0.7.3
�[1m�[92m   Compiling�[0m const-serialize-macro v0.7.2
�[1m�[92m   Compiling�[0m ring v0.17.14
�[1m�[92m   Compiling�[0m log v0.4.29
�[1m�[92m   Compiling�[0m cpufeatures v0.2.17
�[1m�[92m   Compiling�[0m zmij v1.0.21
�[1m�[92m   Compiling�[0m const-serialize v0.7.2
�[1m�[92m   Compiling�[0m darling v0.21.3
�[1m�[92m   Compiling�[0m dioxus-cli-config v0.7.3
�[1m�[92m   Compiling�[0m const-serialize-macro v0.8.0-alpha.0
�[1m�[92m   Compiling�[0m http-body v1.0.1
�[1m�[92m   Compiling�[0m equivalent v1.0.2
�[1m�[92m   Compiling�[0m zeroize v1.8.2
�[1m�[92m   Compiling�[0m serde_json v1.0.149
�[1m�[92m   Compiling�[0m hashbrown v0.16.1
�[1m�[92m   Compiling�[0m indexmap v2.13.0
�[1m�[92m   Compiling�[0m rustls-pki-types v1.14.0
�[1m�[92m   Compiling�[0m icu_normalizer v2.1.1
�[1m�[92m   Compiling�[0m rand_core v0.9.5
�[1m�[92m   Compiling�[0m icu_properties v2.1.2
�[1m�[92m   Compiling�[0m dioxus-rsx v0.7.3
�[1m�[92m   Compiling�[0m enumset_derive v0.14.0
�[1m�[92m   Compiling�[0m ppv-lite86 v0.2.21
�[1m�[92m   Compiling�[0m tokio-util v0.7.18
�[1m�[92m   Compiling�[0m getrandom v0.2.17
�[1m�[92m   Compiling�[0m openssl v0.10.75
�[1m�[92m   Compiling�[0m try-lock v0.2.5
�[1m�[92m   Compiling�[0m foreign-types-shared v0.1.1
�[1m�[92m   Compiling�[0m untrusted v0.9.0
�[1m�[92m   Compiling�[0m atomic-waker v1.1.2
�[1m�[92m   Compiling�[0m tower-service v0.3.3
�[1m�[92m   Compiling�[0m h2 v0.4.13
�[1m�[92m   Compiling�[0m foreign-types v0.3.2
�[1m�[92m   Compiling�[0m want v0.3.1
�[1m�[92m   Compiling�[0m euclid v0.22.13
�[1m�[92m   Compiling�[0m rand_chacha v0.9.0
�[1m�[92m   Compiling�[0m dioxus-core-macro v0.7.3
�[1m�[92m   Compiling�[0m enumset v1.1.10
�[1m�[92m   Compiling�[0m idna_adapter v1.2.1
�[1m�[92m   Compiling�[0m wasm-bindgen-futures v0.4.58
�[1m�[92m   Compiling�[0m web-sys v0.3.85
�[1m�[92m   Compiling�[0m dioxus-hooks v0.7.3
�[1m�[92m   Compiling�[0m form_urlencoded v1.2.2
�[1m�[92m   Compiling�[0m dioxus-html-internal-macro v0.7.3
�[1m�[92m   Compiling�[0m keyboard-types v0.7.0
�[1m�[92m   Compiling�[0m openssl-macros v0.1.1
�[1m�[92m   Compiling�[0m async-trait v0.1.89
�[1m�[92m   Compiling�[0m winnow v0.7.14
�[1m�[92m   Compiling�[0m native-tls v0.2.18
�[1m�[92m   Compiling�[0m rustls v0.23.36
�[1m�[92m   Compiling�[0m regex-syntax v0.8.9
�[1m�[92m   Compiling�[0m pin-utils v0.1.0
�[1m�[92m   Compiling�[0m utf8_iter v1.0.4
�[1m�[92m   Compiling�[0m idna v1.1.0
�[1m�[92m   Compiling�[0m regex-automata v0.4.14
�[1m�[92m   Compiling�[0m hyper v1.8.1
�[1m�[92m   Compiling�[0m dioxus-html v0.7.3
�[1m�[92m   Compiling�[0m rand v0.9.2
�[1m�[92m   Compiling�[0m const-serialize v0.8.0-alpha.0
�[1m�[92m   Compiling�[0m rustls-webpki v0.103.9
�[1m�[92m   Compiling�[0m sha1 v0.10.6
�[1m�[92m   Compiling�[0m dioxus-document v0.7.3
�[1m�[92m   Compiling�[0m dioxus-interpreter-js v0.7.3
�[1m�[92m   Compiling�[0m sledgehammer_bindgen_macro v0.6.5
�[1m�[92m   Compiling�[0m data-encoding v2.10.0
�[1m�[92m   Compiling�[0m ipnet v2.11.0
�[1m�[92m   Compiling�[0m lazy_static v1.5.0
�[1m�[92m   Compiling�[0m rustc-hash v1.1.0
�[1m�[92m   Compiling�[0m base64 v0.22.1
�[1m�[92m   Compiling�[0m openssl-probe v0.2.1
�[1m�[92m   Compiling�[0m subtle v2.6.1
�[1m�[92m   Compiling�[0m utf-8 v0.7.6
�[1m�[92m   Compiling�[0m tungstenite v0.27.0
�[1m�[92m   Compiling�[0m hyper-util v0.1.20
�[1m�[92m   Compiling�[0m sledgehammer_utils v0.3.1
�[1m�[92m   Compiling�[0m sharded-slab v0.1.7
�[1m�[92m   Compiling�[0m sledgehammer_bindgen v0.6.0
�[1m�[92m   Compiling�[0m manganis-core v0.7.3
�[1m�[92m   Compiling�[0m matchers v0.2.0
�[1m�[92m   Compiling�[0m url v2.5.8
�[1m�[92m   Compiling�[0m sha2 v0.10.9
�[1m�[92m   Compiling�[0m dioxus-history v0.7.3
�[1m�[92m   Compiling�[0m dioxus-devtools-types v0.7.3
�[1m�[92m   Compiling�[0m dioxus-web v0.7.3
�[1m�[92m   Compiling�[0m macro-string v0.1.4
�[1m�[92m   Compiling�[0m sync_wrapper v1.0.2
�[1m�[92m   Compiling�[0m thread_local v1.1.9
�[1m�[92m   Compiling�[0m tower-layer v0.3.3
�[1m�[92m   Compiling�[0m dunce v1.0.5
�[1m�[92m   Compiling�[0m base16 v0.2.1
�[1m�[92m   Compiling�[0m tower v0.5.3
�[1m�[92m   Compiling�[0m manganis-macro v0.7.3
�[1m�[92m   Compiling�[0m dioxus-router-macro v0.7.3
�[1m�[92m   Compiling�[0m tracing-subscriber v0.3.22
�[1m�[92m   Compiling�[0m dioxus-devtools v0.7.3
�[1m�[92m   Compiling�[0m tokio-rustls v0.26.4
�[1m�[92m   Compiling�[0m wasm-streams v0.4.2
�[1m�[92m   Compiling�[0m tokio-native-tls v0.3.1
�[1m�[92m   Compiling�[0m webpki-roots v1.0.6
�[1m�[92m   Compiling�[0m gloo-timers v0.3.0
�[1m�[92m   Compiling�[0m serde-wasm-bindgen v0.6.5
�[1m�[92m   Compiling�[0m http-body-util v0.1.3
�[1m�[92m   Compiling�[0m dioxus-stores-macro v0.7.3
�[1m�[92m   Compiling�[0m send_wrapper v0.6.0
�[1m�[92m   Compiling�[0m powerfmt v0.2.0
�[1m�[92m   Compiling�[0m option-ext v0.2.0
�[1m�[92m   Compiling�[0m ryu v1.0.23
�[1m�[92m   Compiling�[0m iri-string v0.7.10
�[1m�[92m   Compiling�[0m serde_urlencoded v0.7.1
�[1m�[92m   Compiling�[0m dirs-sys v0.5.0
�[1m�[92m   Compiling�[0m dioxus-stores v0.7.3
�[1m�[92m   Compiling�[0m deranged v0.5.6
�[1m�[92m   Compiling�[0m hyper-tls v0.6.0
�[1m�[92m   Compiling�[0m hyper-rustls v0.27.7
�[1m�[92m   Compiling�[0m manganis v0.7.3
�[1m�[92m   Compiling�[0m tower-http v0.6.8
�[1m�[92m   Compiling�[0m dioxus-logger v0.7.3
�[1m�[92m   Compiling�[0m dioxus-router v0.7.3
�[1m�[92m   Compiling�[0m dioxus-asset-resolver v0.7.3
�[1m�[92m   Compiling�[0m dioxus-config-macro v0.7.3
�[1m�[92m   Compiling�[0m encoding_rs v0.8.35
�[1m�[92m   Compiling�[0m dioxus-config-macros v0.7.3
�[1m�[92m   Compiling�[0m num_threads v0.1.7
�[1m�[92m   Compiling�[0m num-conv v0.2.0
�[1m�[92m   Compiling�[0m mime v0.3.17
�[1m�[92m   Compiling�[0m time-core v0.1.8
�[1m�[92m   Compiling�[0m dioxus v0.7.3
�[1m�[92m   Compiling�[0m time v0.3.47
�[1m�[92m   Compiling�[0m dirs v6.0.0
�[1m�[92m   Compiling�[0m reqwest v0.12.28
�[1m�[92m   Compiling�[0m log-workout v0.1.0 (/home/runner/work/LogOut/LogOut)
�[1m�[92m    Finished�[0m `test` profile [unoptimized + debuginfo] target(s) in 54.76s
�[1m�[92m     Running�[0m unittests src/main.rs (target/llvm-cov-target/debug/deps/log_workout-ab1956251af3abe0)

running 121 tests
test models::tests::all_forces_serde_round_trip ... ok
test models::tests::all_categories_serde_round_trip ... ok
test models::tests::all_equipment_serde_round_trip ... ok
test models::tests::category_all_contains_every_variant ... ok
test models::tests::category_display_all_variants ... ok
test models::tests::all_muscles_serde_round_trip ... ok
test models::tests::category_round_trip ... ok
test models::tests::distance_display_fractional_km ... ok
test models::tests::distance_display_metres ... ok
test models::tests::equipment_all_contains_every_variant ... ok
test models::tests::distance_display_whole_km ... ok
test models::tests::equipment_display_all_variants ... ok
test models::tests::equipment_round_trip ... ok
test models::tests::exercise_backward_compat_missing_optional_fields ... ok
test models::tests::exercise_full_json_deserialization ... ok
test models::tests::exercise_get_first_image_url_none ... ok
test models::tests::exercise_get_first_image_url_some ... ok
test models::tests::exercise_get_image_url_by_index ... ok
test models::tests::exercise_get_image_url_full_url_passthrough ... ok
test models::tests::exercise_level_none_when_missing_from_json ... ok
test models::tests::exercise_level_some_when_present_in_json ... ok
test models::tests::exercise_log_duration_saturates_on_underflow ... ok
test models::tests::exercise_log_duration_seconds ... ok
test models::tests::exercise_log_duration_seconds_none_when_incomplete ... ok
test models::tests::exercise_log_force_none_is_omitted_in_json ... ok
test models::tests::exercise_log_is_complete ... ok
test models::tests::exercise_log_serde_round_trip_with_all_fields ... ok
test models::tests::exercise_minimal ... ok
test models::tests::exercise_optional_fields_none ... ok
test models::tests::find_active_session_returns_first_without_end_time ... ok
test models::tests::find_active_session_returns_none_for_empty_list ... ok
test models::tests::find_active_session_returns_none_when_all_finished ... ok
test models::tests::finish_session_cancelled_session_is_not_stored ... ok
test models::tests::finish_session_with_exercises_is_stored ... ok
test models::tests::force_all_contains_every_variant ... ok
test models::tests::force_display_all_variants ... ok
test models::tests::force_has_reps ... ok
test models::tests::format_time_boundary_values ... ok
test models::tests::format_time_hours ... ok
test models::tests::format_time_minutes_seconds ... ok
test models::tests::get_current_timestamp_returns_reasonable_value ... ok
test models::tests::level_display_all_variants ... ok
test models::tests::level_serde_round_trip ... ok
test models::tests::mechanic_display_all_variants ... ok
test models::tests::mechanic_serde_round_trip ... ok
test models::tests::muscle_all_contains_every_variant ... ok
test models::tests::muscle_display_all_variants ... ok
test models::tests::muscle_round_trip ... ok
test models::tests::parse_distance_km_invalid ... ok
test models::tests::parse_distance_km_large_value_clamped ... ok
test models::tests::parse_distance_km_nan_and_infinity ... ok
test models::tests::parse_distance_km_valid ... ok
test models::tests::parse_weight_kg_invalid ... ok
test models::tests::parse_weight_kg_large_value_clamped ... ok
test models::tests::parse_weight_kg_nan_and_infinity ... ok
test models::tests::parse_weight_kg_valid ... ok
test models::tests::pending_ids_include_repeated_exercises ... ok
test models::tests::remove_first_occurrence_from_pending_ids ... ok
test models::tests::session_with_only_pending_exercises_is_cancelled ... ok
test models::tests::user_exercise_serialization_with_all_fields ... ok
test models::tests::weight_display_fractional_kg ... ok
test models::tests::weight_display_whole_kg ... ok
test models::tests::weight_display_zero ... ok
test models::tests::workout_exercise_serde_round_trip ... ok
test models::tests::workout_serde_round_trip ... ok
test models::tests::workout_session_backward_compat_missing_pending_ids ... ok
test models::tests::workout_session_current_exercise_fields_default_none ... ok
test models::tests::workout_session_is_active ... ok
test models::tests::workout_session_is_cancelled_when_no_exercises ... ok
test models::tests::workout_session_is_not_cancelled_when_has_exercises ... ok
test models::tests::workout_session_new_has_empty_pending_ids ... ok
test models::tests::workout_session_new_has_no_end_time ... ok
test models::tests::workout_session_pending_ids_serialization_round_trip ... ok
test models::tests::workout_set_serde_round_trip ... ok
test models::tests::workout_session_with_exercise_logs_serde ... ok
test models::tests::workout_set_without_optionals ... ok
test services::exercise_db::tests::get_equipment_types_only_returns_some_equipment ... ok
test services::exercise_db::tests::exercises_json_url_uses_fork ... ok
test services::exercise_db::tests::get_equipment_types_deduplicates ... ok
test services::exercise_db::tests::get_exercise_by_id_found ... ok
test services::exercise_db::tests::get_exercise_by_id_not_found ... ok
test services::exercise_db::tests::get_muscle_groups_deduplicates ... ok
test services::exercise_db::tests::get_muscle_groups_only_returns_primary_muscles ... ok
test services::exercise_db::tests::is_refresh_due_false_at_exact_interval_boundary ... ok
test services::exercise_db::tests::is_refresh_due_false_when_recent ... ok
test services::exercise_db::tests::is_refresh_due_true_when_no_timestamp ... ok
test services::exercise_db::tests::is_refresh_due_true_when_stale ... ok
test services::exercise_db::tests::native::clear_fetch_cache_removes_config_value ... ok
test services::exercise_db::tests::native::download_exercises_returns_empty_vec_on_200_empty_json ... ok
test services::exercise_db::tests::native::download_exercises_returns_error_on_connection_refused ... ok
test services::exercise_db::tests::native::download_exercises_returns_error_on_http_404 ... ok
test services::exercise_db::tests::native::is_refresh_due_false_after_fresh_timestamp ... ok
test services::exercise_db::tests::native::is_refresh_due_true_when_no_config_entry ... ok
test services::exercise_db::tests::search_by_category ... ok
test services::exercise_db::tests::search_by_equipment ... ok
test services::exercise_db::tests::search_by_force ... ok
test services::exercise_db::tests::search_by_level ... ok
test services::exercise_db::tests::search_by_name ... ok
test services::exercise_db::tests::search_by_muscle ... ok
test services::exercise_db::tests::search_by_secondary_muscle ... ok
test services::exercise_db::tests::native::record_fetch_timestamp_writes_numeric_value ... ok
test services::exercise_db::tests::search_by_secondary_muscle_biceps ... ok
test services::exercise_db::tests::search_case_insensitive ... ok
test services::exercise_db::tests::search_custom_exercise_by_category_unified ... ok
test services::exercise_db::tests::search_custom_exercise_by_muscle_unified ... ok
test services::exercise_db::tests::search_custom_exercise_by_secondary_muscle_unified ... ok
test services::exercise_db::tests::search_empty_query_returns_all ... ok
test services::exercise_db::tests::search_no_match ... ok
test services::exercise_db::tests::search_with_none_equipment_does_not_match_equipment_query ... ok
test services::exercise_db::tests::search_with_none_force_does_not_match_force_query ... ok
test services::service_worker::tests::register_service_worker_noop_on_native ... ok
test services::wake_lock::tests::enable_wake_lock_noop_on_native ... ok
test utils::tests::days_since_uses_local_midnight_boundary ... ok
test utils::tests::exercise_db_url_storage_key_is_stable ... ok
test utils::tests::format_session_date_beginning_of_today ... ok
test utils::tests::format_session_date_days_ago ... ok
test utils::tests::format_session_date_end_of_yesterday ... ok
test utils::tests::format_session_date_today ... ok
test utils::tests::format_session_date_two_days_ago ... ok
test utils::tests::format_session_date_yesterday ... ok
test utils::tests::get_exercise_db_url_returns_default_on_native ... ok

test result: ok. 121 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s

Coverage Summary

Filename                                 Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
components/active_session.rs                 436               436     0.00%          32                32     0.00%         246               246     0.00%           0                 0         -
components/add_custom_exercise.rs             30                30     0.00%           3                 3     0.00%          24                24     0.00%           0                 0         -
components/analytics.rs                      182               182     0.00%          32                32     0.00%         111               111     0.00%           0                 0         -
components/bottom_nav.rs                       1                 1     0.00%           1                 1     0.00%           1                 1     0.00%           0                 0         -
components/completed_exercise_log.rs          95                95     0.00%          14                14     0.00%          48                48     0.00%           0                 0         -
components/credits.rs                         18                18     0.00%           3                 3     0.00%          16                16     0.00%           0                 0         -
components/edit_custom_exercise.rs            47                47     0.00%          12                12     0.00%          32                32     0.00%           0                 0         -
components/exercise_card.rs                   44                44     0.00%           4                 4     0.00%          31                31     0.00%           0                 0         -
components/exercise_form_fields.rs           190               190     0.00%          24                24     0.00%         104               104     0.00%           0                 0         -
components/exercise_list.rs                  167               167     0.00%          14                14     0.00%         101               101     0.00%           0                 0         -
components/home.rs                            76                76     0.00%          20                20     0.00%          46                46     0.00%           0                 0         -
components/session_exercise_form.rs           28                28     0.00%          15                15     0.00%          15                15     0.00%           0                 0         -
components/session_timers.rs                  27                27     0.00%          11                11     0.00%          17                17     0.00%           0                 0         -
components/workout_log.rs                     96                96     0.00%          14                14     0.00%          60                60     0.00%           0                 0         -
main.rs                                       22                22     0.00%          12                12     0.00%          17                17     0.00%           0                 0         -
models/mod.rs                               1506                 3    99.80%         109                 1    99.08%        1028                 2    99.81%           0                 0         -
services/exercise_db.rs                      714                 4    99.44%          66                 2    96.97%         447                 2    99.55%           0                 0         -
services/exercise_loader.rs                   56                56     0.00%           6                 6     0.00%          36                36     0.00%           0                 0         -
services/service_worker.rs                     6                 0   100.00%           2                 0   100.00%           6                 0   100.00%           0                 0         -
services/storage.rs                          365               298    18.36%          55                43    21.82%         223               176    21.08%           0                 0         -
services/wake_lock.rs                          5                 0   100.00%           2                 0   100.00%           5                 0   100.00%           0                 0         -
utils.rs                                     117                 1    99.15%          13                 0   100.00%          67                 1    98.51%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                       4228              1821    56.93%         464               263    43.32%        2681              1086    59.49%           0                 0         -

Coverage Gate ✅ PASSED — all tested files have ≥ 90% coverage

File Lines Hit/Total Coverage Status
src/models/mod.rs 1026/1028 99%
src/services/exercise_db.rs 445/447 99%
src/services/service_worker.rs 6/6 100%
src/services/wake_lock.rs 5/5 100%
src/utils.rs 66/67 98%

@github-actions
Copy link

📸 E2E Test Failures

Test failures were detected. Screenshots are available in the Artifacts section of the Action Run.

@gfauredev gfauredev marked this pull request as ready for review February 26, 2026 17:24
Co-authored-by: gfauredev <19304085+gfauredev@users.noreply.github.com>
Copilot AI changed the title UX improvements: replay sets, mobile notifications, exercise tag links, toast refactor, CD filtering UX improvements: replay sets, mobile notifications, exercise tag links, common toast, CD commit filter Feb 26, 2026
@gfauredev gfauredev closed this Feb 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants